package com.imooc.player;
import java.util.ArrayList;
/**
 * 播放列表类
 * @author xiaoban
 *
 */
import java.util.List;

public class PlayList {
	private String playListName;//播放列表名称
	private List<Song> musicList;//播放列表的歌曲集合
	
	public PlayList(String playListName) {
		super();
		this.playListName = playListName;
		musicList = new ArrayList<Song>();
	}
	
	public String getPlayListName() {
		return playListName;
	}

	public void setPlayListName(String playListName) {
		this.playListName = playListName;
	}

	public List<Song> getMusicList() {
		return musicList;
	}

	public void setMusicList(List<Song> musicList) {
		this.musicList = musicList;
	}

	/**
	 * 将歌曲添加到播放列表中
	 * @param song 要添加到歌曲
	 */
	public void addToPlayList(Song song) {
		//1.播放列表中个歌曲不能重复
		//1.1 重复
		//1.1.1 提示“重复啦” 结束：return
		//1.2 不重复
		//1.2.1 添加到“歌曲集合”中
		boolean flag = false; //判断在列表中是否存在
		for(Song song1:musicList) {
			//if(song1 == song){ //❌
			if(song1.equals(song)) {
				flag = true;
				break;
			}
		}
		
		if(flag) {
			System.out.println("该歌曲已经存在于播放列表中，添加失败！");
		}else {
			musicList.add(song);
		}
	}
	
	/**
	 * 通过歌曲id查询
	 * @param id 要查询歌曲的id
	 * @return 返回查找到的歌曲
	 */
	public Song searchSongById(String id) {
		Song song = null;
		//遍历播放列表，找到id相同的歌曲返回
		for(Song s:musicList) {
			if (s.getId().equals(id)) {
				song = s;
				break;
			}
		}
		//找不到就返回null，判断是否null来可以判断是否存在该歌曲
		return song;
	}

	/**
	 * 通过歌曲名字查询
	 * @param songName 要查询歌曲的名字
	 * @return 返回查找到的歌曲
	 */
	public Song searchSongByName(String songName) {
		Song song = null;
		for(Song s:musicList) {
			if(s.getName().equals(songName)) {
				song = s;
				break;
			}
		}
		return song;
	}
	
	/**
	 * 修改播放列表中的歌曲信息
	 * @param id 要修改的歌曲id
	 * @param song 新的歌曲信息
	 */
	public void updateSong(String id,Song song) {
		//先查找，如果存在这个id的歌曲，才能修改，不存在就修改失败
		
		//自己没写出来，本想着在原来的地方直接替换掉，
		//没想到应该是先移除remove，然后添加到最后
		Song song1 = searchSongById(id);
		if(song1  == null) {
			System.out.println("没有找到id为" + id + "对应的歌曲信息");
		}else {
			//先移除原来的信息，然后重新添加
			//musicList.remove(id);//❌这里错写成id了
			musicList.remove(song1);
			musicList.add(song);
			System.out.println("修改成功！");
		}
	}
	
	/**
	 * 从播放列表中删除指定歌曲信息
	 * @param id 歌曲的id
	 */
	public void deleteSong(String id) {
		//先遍历查找，然后删除(不需要遍历查找，因为我们已有查找方法）
		Song song = searchSongById(id);
		if (song == null) {
			System.out.println("没有找到id为" + id + "对应的歌曲信息");
		}else {
			musicList.remove(song);
			System.out.println("删除成功！");
		}
	}
	
	/**
	 * 显示播放器列表中所有到歌曲
	 */
	public void displayAllSong() {
		System.out.println("播放列表中的所有歌曲为：");//🤔️
		for(Song song:musicList) {
			System.out.println(song);
		}
	}
	
}
